/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package economicocontrol.bl;

import economicocontrol.Constante.Constante;
import economicocontrol.Validaciones.ValidacionesCampos;
import economicocontrol.dao.EstatusEntradaSalidaDAO;
import economicocontrol.dao.RegistroDepartamentosDAO;
import economicocontrol.dao.RegistroEconomicosDAO;
import economicocontrol.dao.RegistroEntradaSalidaDAO;
import economicocontrol.dao.RegistroPersonalDAO;
import economicocontrol.dao.entity.EstatusEntradaSalida;
import economicocontrol.dao.entity.RegistroDepartamentos;
import economicocontrol.dao.entity.RegistroEconomicos;
import economicocontrol.dao.entity.RegistroEntradaSalida;
import economicocontrol.dao.entity.RegistroPersonal;
import economicocontrol.dao.entity.StatusEconomico;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;

/**
 *
 * @author iMac
 */

public class SeguridadBL {
    private List<RegistroDepartamentos> listEntDep;
    private List<RegistroPersonal> listEntPer;
    private List<RegistroEconomicos> listEntEco;
    private List<RegistroEntradaSalida> listEntEntSal;
    private List<StatusEconomico> listStaEco;
    private List<EstatusEntradaSalida> listStaEntSal;
    private RegistroDepartamentos entDep;
    private RegistroPersonal entPer;
    private RegistroEconomicos entEco;
    private RegistroEntradaSalida entEntSal;
    private StatusEconomico entStaEco;
    private EstatusEntradaSalida entStaEntSal;
    private Date date ;
    private RegistroEntradaSalidaDAO regEntSalDAO;
    private boolean valRegEco;
    
    
    public SeguridadBL(){
        entEntSal =new RegistroEntradaSalida();
        date = new Date();
        regEntSalDAO = new RegistroEntradaSalidaDAO();
        valRegEco=false;
    }
    
    public void regDepAll(){
        RegistroDepartamentosDAO regDep=new RegistroDepartamentosDAO();
        listEntDep=regDep.findAll();
    }
    
    public void regPerAll(){
        RegistroPersonalDAO regPer=new RegistroPersonalDAO();
        listEntPer=regPer.findAll();
    }

    public void regEcoAll(){
        RegistroEconomicosDAO regEco=new RegistroEconomicosDAO();
        listEntEco=regEco.findAll();
    }
    
    public void regEcoSalAll(){
        
        listEntEntSal=regEntSalDAO.findAll();
    }
    public void regDepBus(){
        RegistroDepartamentosDAO regDep=new RegistroDepartamentosDAO();
        listEntDep=regDep.findAll();
        if (listEntDep.size()==1) {
            entDep=listEntDep.get(0);
        }
    }
    
    public void regPerBus(){
        RegistroPersonalDAO regPer=new RegistroPersonalDAO();
        listEntPer=regPer.findAll();
        if (listEntPer.size()==1) {
            entPer=listEntPer.get(0);
        }
    }

    public boolean regEcoBus( String idEconomico){
        if(ValidacionesCampos.esEntero(idEconomico)){            
            RegistroEconomicosDAO regEco=new RegistroEconomicosDAO();
            int idEco=Integer.parseInt(idEconomico);
            listEntEco = regEco.buscarIdEco(idEco);
            if (listEntEco.size()==1) {
                valRegEco=true;
                entEco=listEntEco.get(0);
                entPer=entEco.getRegistroPersonalidRegistroPersonal();
                return true;
            }
        }
        return false;
        
    }
    
    public boolean regEcoSalXEco(String idEconomico){
        if(ValidacionesCampos.esEntero(idEconomico)){
            int aux = Integer.parseInt(idEconomico);
            listEntEntSal=regEntSalDAO.buscarIdEntSalXEco(aux);
            if (listEntEntSal.size()==1) {
                entEntSal=listEntEntSal.get(0);
                return true;            
            }
        }
        return false;   
    }
    public void regPerUbi(int pos){
        if (listEntPer.size()>0) {
            entPer=listEntPer.get(pos);
        }
    }
    
  /*  public void estEntAc(){
        StatusEconomicoDAO estEcoDAO= new StatusEconomicoDAO();
        listStaEco=estEcoDAO.buscarIdEstEco(1);
        if (listStaEco.size()==1) {
            entStaEco=listStaEco.get(0);
        }
    }*/
    
    public void estEntSalAbierto(){
        EstatusEntradaSalidaDAO estEcoDAO= new EstatusEntradaSalidaDAO();
        
        int idEstEntSal=Integer.parseInt(Constante.STATUS_ENTRADA_SALIDA_ABIERTO);
        
        listStaEntSal=estEcoDAO.buscarIdEstEntSal(idEstEntSal);
        if (listStaEntSal.size()==1) {
            entStaEntSal=listStaEntSal.get(0);
        }
    }
    
        public void estEntSalCerrado(){
        EstatusEntradaSalidaDAO estEcoDAO= new EstatusEntradaSalidaDAO();
        
        int idEstEntSal=Integer.parseInt(Constante.STATUS_ENTRADA_SALIDA_CERRADO);
        
        listStaEntSal=estEcoDAO.buscarIdEstEntSal(idEstEntSal);
        if (listStaEntSal.size()==1) {
            entStaEntSal=listStaEntSal.get(0);
        }
    }
    
    
    
    public boolean insertSeguridad(String km) {
        this.regDepBus();
        //this.regEcoBus();
        this.regPerBus();
        this.estEntSalAbierto();
        
        if(ValidacionesCampos.esEntero(km)){
            entEntSal.setIdRegistroKilometraje(regEntSalDAO.idMax()+1);
            entEntSal.setFechaSalida(date);
            entEntSal.setHorasalida(date);
            entEntSal.setKilometrajeSalida(Integer.parseInt(km));
            entEntSal.setRegistroDepartamentosIdRegistroDepartamento(entPer.getRegistroDepartamentosIdRegistroDepartamento());
            entEntSal.setRegistroEconomicosideconomicos(entEco);
            entEntSal.setRegistroPersonalidRegistroPersonal(entPer);
            entEntSal.setEstatusEntradaSalidaidEstatus(entStaEntSal);
            entEntSal.setDiaDeSemanaSalida(date.getDay());
            if(regEntSalDAO.listKmEntrada(entEco.getIdEconomicos())<Integer.parseInt(km)){
                regEntSalDAO.insert(entEntSal);
                return true;
            }
        }
        return false; 
        
    }
    
    public boolean updateSeguridad(String km) {
        
        this.estEntSalCerrado();
        entEntSal.setFechaEntrada(date);
        entEntSal.setHoraEntrada(date);
        
        entEntSal.setKilometrajeEntrada(Integer.parseInt(km));
        entEntSal.setEstatusEntradaSalidaidEstatus(entStaEntSal);
        entEntSal.setDiaDeSemanaEntrada(date.getDay());
        if (entEntSal.getKilometrajeSalida()<entEntSal.getKilometrajeEntrada()) {
            regEntSalDAO.update(entEntSal);
            return true;
        }
        return false;
        
    }

    public void resDate() {
        
        date=new Date();
    }
    
    public List<RegistroDepartamentos> getListEntDep() {
        return listEntDep;
    }

    public void setListEntDep(List<RegistroDepartamentos> listEntDep) {
        this.listEntDep = listEntDep;
    }

    public List<RegistroPersonal> getListEntPer() {
        return listEntPer;
    }

    public void setListEntPer(List<RegistroPersonal> listEntPer) {
        this.listEntPer = listEntPer;
    }

    public List<RegistroEconomicos> getListEntEco() {
        return listEntEco;
    }

    public void setListEntEco(List<RegistroEconomicos> listEntEco) {
        this.listEntEco = listEntEco;
    }

    public List<RegistroEntradaSalida> getListEntEntSal() {
        return listEntEntSal;
    }

    public void setListEntEntSal(List<RegistroEntradaSalida> listEntEntSal) {
        this.listEntEntSal = listEntEntSal;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public List<StatusEconomico> getListStaEco() {
        return listStaEco;
    }

    public void setListStaEco(List<StatusEconomico> listStaEco) {
        this.listStaEco = listStaEco;
    }

    public List<EstatusEntradaSalida> getListStaEntSal() {
        return listStaEntSal;
    }

    public void setListStaEntSal(List<EstatusEntradaSalida> listStaEntSal) {
        this.listStaEntSal = listStaEntSal;
    }

    public RegistroDepartamentos getEntDep() {
        return entDep;
    }

    public void setEntDep(RegistroDepartamentos entDep) {
        this.entDep = entDep;
    }

    public RegistroPersonal getEntPer() {
        return entPer;
    }

    public void setEntPer(RegistroPersonal entPer) {
        this.entPer = entPer;
    }

    public RegistroEconomicos getEntEco() {
        return entEco;
    }

    public void setEntEco(RegistroEconomicos entEco) {
        this.entEco = entEco;
    }

    public RegistroEntradaSalida getEntEntSal() {
        return entEntSal;
    }

    public void setEntEntSal(RegistroEntradaSalida entEntSal) {
        this.entEntSal = entEntSal;
    }

    public StatusEconomico getEntStaEco() {
        return entStaEco;
    }

    public void setEntStaEco(StatusEconomico entStaEco) {
        this.entStaEco = entStaEco;
    }

    public EstatusEntradaSalida getEntStaEntSal() {
        return entStaEntSal;
    }

    public void setEntStaEntSal(EstatusEntradaSalida entStaEntSal) {
        this.entStaEntSal = entStaEntSal;
    }

    public RegistroEntradaSalidaDAO getRegEntSalDAO() {
        return regEntSalDAO;
    }

    public void setRegEntSalDAO(RegistroEntradaSalidaDAO regEntSalDAO) {
        this.regEntSalDAO = regEntSalDAO;
    }

    public boolean isValRegEco() {
        return valRegEco;
    }

    public void setValRegEco(boolean valRegEco) {
        this.valRegEco = valRegEco;
    }
    
    
    
}
